package com.xps.and.yuntong.Data.serviceapi;


import com.xps.and.yuntong.Data.bean1.AlipayBean;
import com.xps.and.yuntong.Data.bean1.ArrivedDestination;
import com.xps.and.yuntong.Data.bean1.ArrivedParking;
import com.xps.and.yuntong.Data.bean1.ConfirmSettlement;
import com.xps.and.yuntong.Data.bean1.Departure;
import com.xps.and.yuntong.Data.bean1.FaceDetection;
import com.xps.and.yuntong.Data.bean1.FaceSign;
import com.xps.and.yuntong.Data.bean1.LoginBean;
import com.xps.and.yuntong.Data.bean1.OrderDetail;
import com.xps.and.yuntong.Data.bean1.OrderDriver;
import com.xps.and.yuntong.Data.bean1.OrderList;
import com.xps.and.yuntong.Data.bean1.OrderSettlement;
import com.xps.and.yuntong.Data.bean1.Resetpwd;
import com.xps.and.yuntong.Data.bean1.ShortBean;
import com.xps.and.yuntong.Data.bean1.ShortVerification;
import com.xps.and.yuntong.Data.bean1.StartTrip;
import com.xps.and.yuntong.Data.bean1.SubmitJpush;
import com.xps.and.yuntong.Data.bean1.doRegister;

import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
import rx.Observable;


/**
 *
 */
public interface UserApi {

    /**
     * 发送短信验证码接口
     *
     * @param phoneNum 手机号
     * @param smsCode  类型默认DRIVER_REGISTER
     * @param smsSign  短信签名，签名规则：md5(手机号码后4位 + 手机号码前3位 + 短信模式)
     */
    @FormUrlEncoded
    @POST("con-fun/send-sms")
    Observable<ShortBean> getShort(@Field("phoneNum") String phoneNum, @Field("smsCode") String smsCode, @Field("smsSign") String smsSign);

    /**
     * 验证短信验证码接口
     *
     * @param phoneNum      手机号
     * @param smsCode       类型默认DRIVER_REGISTER
     * @param smsVerifyCode 短短信验证码
     */
    @FormUrlEncoded
    @POST("con-fun/valid-sms")
    Observable<ShortVerification> getShortVerification(@Field("phoneNum") String phoneNum, @Field("smsCode") String smsCode, @Field("smsVerifyCode") String smsVerifyCode);

    /**
     * 验证短信验证码接口
     *
     * @param mobile_phone 手机号
     * @param sms_code     验证码
     * @param new_pwd      新密码
     */
    @FormUrlEncoded
    @POST("con-fun/reset-pwd")
    Observable<Resetpwd> resetpwd(@Field("mobile_phone") String mobile_phone, @Field("sms_code") String sms_code, @Field("new_pwd") String new_pwd);


    /**
     * 司机注册
     *
     * @param name            姓名
     * @param mobile_phone    手机号 (number)
     * @param password        密码
     * @param head_img        头像地址，相对路径。headImg/2018-01-10/18134137905/head.jpg
     * @param photo_url       照片路径，相对路径。例如：baseFace/2018-01-10/18134137905/face.jpg
     * @param idcard_id       身份证号
     * @param idcard_up       身份证正面路径，相对路径。例如：idcard/2018-01-10/18134137905/up.jpg
     * @param idcard_down     身份证反面路径，相对路径。例如：idcard/2018-01-10/18134137905/down.jpg
     * @param driver_license  驾驶证路径，相对路径。例如：driverLicense/2018-01-10/18134137905/driver.jpg
     * @param driving_license 行驶证路径，相对路径。例如：drivingLicense/2018-01-10/18134137905/driving.jpg
     * @param car_id          车牌号
     * @param driver_age      驾龄
     * @return
     */
    @FormUrlEncoded
    @POST("register/driver-register")
    Observable<doRegister> getRegister(@Field("name") String name, @Field("mobile_phone") String mobile_phone, @Field("password") String password, @Field("head_img") String head_img, @Field("photo_url") String photo_url, @Field("idcard_id") String idcard_id, @Field("idcard_up") String idcard_up, @Field("idcard_down") String idcard_down, @Field("driver_license") String driver_license, @Field("driving_license") String driving_license, @Field("operating_permit") String operating_permit, @Field("car_id") String car_id, @Field("car_color") String car_color, @Field("car_type") String car_type, @Field("car_photo") String car_photo, @Field("driver_age") String driver_age);


    /**
     * @param photo_url 照片路径，相对路径。例如：baseFace/2018-01-10/18134137905/face.jpg
     * @return
     */
    @FormUrlEncoded
    @POST("con-fun/face-detection")
    Observable<FaceDetection> FaceDetection(@Field("photo_url") String photo_url);


    /**
     * @param mobile_phone 手机号
     * @param password     密码
     * @param client_type  登录的客户端类型，USER代表用户端，DRIVER代表司机端
     * @return
     */
    @FormUrlEncoded
    @POST("login/login-client")
    Observable<LoginBean> getLoginYt(@Field("mobile_phone") String mobile_phone, @Field("password") String password, @Field("client_type") String client_type, @Field("sms_code") String sms_code);


    /**
     * @return
     * @param司机查询当前有无订单
     */
    @FormUrlEncoded
    @POST("order/driver-check-order")
    Observable<OrderDriver> getOrederDiver(@Field("aaa") String aaa);


    /**
     * @return
     * @param人脸认证
     */
    @FormUrlEncoded
    @POST("user-fun/face-sign")
    Observable<FaceSign> FaceSign(@Field("photo_url") String photo_url);


    /**
     * @param reg_id      极光token前十位     添加/更新极光ID及设备型号
     * @param device_type 设备型号（例如:Xiaomi）
     * @return
     */
    @FormUrlEncoded
    @POST("user-fun/submit-register-id")
    Observable<SubmitJpush> submitJpush(@Field("reg_id") String reg_id, @Field("device_type") String device_type);


    /**
     * @return
     * @param开始行程
     */
    @FormUrlEncoded
    @POST("order-operation/start-trip")
    Observable<StartTrip> startTrip(@Field("order_id") String order_id);

    /**
     * @return
     * @param到达上车点==我已到达
     */
    @FormUrlEncoded
    @POST("order-operation/arrived-parking")
    Observable<ArrivedParking> arrivedParking(@Field("order_id") String order_id);

    /**
     * @return
     * @param立即出发==开始出发
     */
    @FormUrlEncoded
    @POST("order-operation/departure")
    Observable<Departure> departure(@Field("order_id") String order_id);

    /**
     * @return
     * @param确认送达
     */
    @FormUrlEncoded
    @POST("order-operation/arrived-destination")
    Observable<ArrivedDestination> destination(@Field("order_id") String order_id);


    /**
     * @return
     * @param司机订单结算
     */
    @FormUrlEncoded
    @POST("order-operation/order-settlement")
    Observable<OrderSettlement> orderSettlement(@Field("order_id") String order_id);

    /**
     * @return
     * @param司机确认结算
     */
    @FormUrlEncoded
    @POST("order-operation/confirm-settlement")
    Observable<ConfirmSettlement> confirmSettlement(@Field("order_id") String order_id);


    /**
     * @return
     * @param司机订单列表
     */
    @FormUrlEncoded
    @POST("order/driver-order-list")
    Observable<OrderList> orderList(@Field("page_size") String page_size, @Field("page_index") String page_index);

    /**
     * @return
     * @param司机订单详情
     */
    @FormUrlEncoded
    @POST("order/order-detail")
    Observable<OrderDetail> orderDetail(@Field("order_id") String order_id);

    /**
     * @return
     * @param司机订单详情
     */
    @FormUrlEncoded
    @POST("pay/balance-recharge-by-ali")
    Observable<AlipayBean> getAlipay(@Field("amount") String amount);


}
